Do not suppress errors on writes outside transactions.
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Tue, 9 Aug 2005 16:16:08 +0000 (16:16 +0000)
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Tue, 9 Aug 2005 16:16:08 +0000 (16:16 +0000)
Mike Wray made this change because xend's callbacks were failing
with EROFS, because a transaction was going on.  However, the
solution is to either block callbacks during transactions, or use
a different connection to the store.
We fail ex-transaction activity because it's not clear what the right
behaviour is: it allows deadlock if two people do it, and it implied
your transaction isn't rooted in the right place.

This hack caused the testsuite to fail (obviously), so as a result the
testsuite wasn't run very often.  This caused it to bitrot.
Signed-off-by: Rusty Russel <rusty@rustcorp.com.au>
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
tools/xenstore/xenstored_core.c

index f541975fe5cb59a386132b1d8214bf21366d8a76..40fc8a7942fc0d8ec0800ecde8e1965829f25045 100644 (file)
@@ -931,8 +931,7 @@ static void do_write(struct connection *conn, struct buffered_data *in)
        }
 
        node = canonicalize(conn, vec[0]);
-       if (/*suppress error on write outside transaction*/ 0 &&
-           !within_transaction(conn->transaction, node)) {
+       if (!within_transaction(conn->transaction, node)) {
                send_error(conn, EROFS);
                return;
        }